// routes/person.js 使用的路由处理函数


// 导入用户相关模型
const { PersonModel } = require('../db/model')
// 获取用户列表
const list = async (req, res) => {
  // 1. 拿出参数
  const { current, pagesize, is_status, gender, search } = req.query

  // 2. 按照参数从数据库中获取内容
  // 2-1. 计算开始索引
  const start = (current - 1) * pagesize
  // 2-2. 添加两个筛选条件
  const info = {
    nickname: new RegExp(search) ,
    gender: new RegExp(gender === 'all' ? '' : gender)
  }
  // 判断是否禁用的条件
  // 注意: 你的 is_status 是 1 和 0
  if (is_status !== 'all') info.is_status = is_status - 0 ? true : false
  const result = await PersonModel.find(info).skip(start).limit(pagesize)

  // 3. 获取总数
  const total = (await PersonModel.find(info)).length

  const list = []

  result.forEach(item => {
    list.push({
      id: item._id,
      username: item.username,
      password: item.password,
      nickname: item.nickname,
      gender: item.gender,
      age: item.age,
      desc: item.desc,
      avatar: item.avatar,
      is_status: item.is_status,
      // createTime: moment(item.createTime).format('LLLL')
    })
  })
   
  res.send({
    code: 1,
    message: '获取用户列表成功',
    list: list,
    
    totalPage: Math.ceil(total / pagesize)
  })
  
}

    // 数据没存进去
    // const fn = (a,b) => Math.floor(Math.random()*(b-a+1)+a)
    // const str = '赵钱孙李周吴王郑刘冯陈董卫沈韩杨'
    // const str2 = '一二三四五六七八九十'
    // const g = ['男','女','保密']


    // for (let i = 0; i<159;i++)
    // PersonModel({
    //     username: 'lhy00' + i ,
    //     password: '123456',
    //     is_status:fn(0,1)? true:false ,
    //     age:fn(18,30),
    //     gender:g[fn(0,2)],
    //     nickname: '刘' + 'str[fn(0,15)] + str2[fn(0,9)]+str2[fn(0,9)]'
    // }).save()





// 修改用户状态
const status = async (req, res) => {
  // 1. 拿到参数信息
  const { id, status } = req.body

  // 2. 操作数据库修改信息
  await PersonModel.findByIdAndUpdate(id, { is_status: (status - 0 === 1 ? true : false) })

  // 3. 返回给前端修改完毕的信息
  res.send({
    code: 1,
    message: '修改用户状态成功, 当前用户已经被 ' + (status==true ? '启用' : '禁用')
    
  })
}

// 添加一个用户
const add = async (req, res) => {
  // 得到各种信息
  const { username, password, nickname, age, gender, desc, avatar} = req.body
  
  // 向数据库中添加
  const result = await PersonModel({ username, password, nickname, age, gender, desc, avatar }).save()
  
  if (result) 
  res.send({
    code: 1,
    message: '添加用户成功'
  })
}

// 删除一个用户
const remove = async (req, res) => {
  // 1. 拿到 id
const { id } = req.params




await PersonModel.findByIdAndDelete(id)

//  返回给前端结果
res.send({ code: 1, message: '删除用户成功' })
}

// 获取一条信息
const info = async (req, res) => {
  // 1. 拿到 id 信息
  const { id } = req.params

  // 2. 根据 id 获取信息
  const result = await await PersonModel.findById(id)

  // 3. 返回给前端信息
  res.send({
   code: 1,
   message: '获取用户信息成功',
   info: {
     id: result._id,
     username:result.username,
     password:result.password,
     nickname:result.nickname,
     age:result.age,
     gender:result.gender,
     desc:result.desc,
     avatar:result.avatar
   }
 })


}
// 编辑一条信息
const update = async (req, res) => {
  // 1. 获取到信息
  console.log('我是update')
  const {id, username, password, nickname, age, gender, desc, avatar} = req.body
  
  // 2. 操作数据库修改信息
   await PersonModel.findByIdAndUpdate(id, { username, password, nickname, age, gender, desc, avatar })

  // 3. 返回给前端信息
  
  res.send({ code: 1, message: '修改用户成功了' })
}

module.exports = {
    list,
    status,
    add,
    remove,
    info,
    update
  }